﻿#include<iostream>
using namespace std;

//class Stack
//{
//public:
//	void Push(int x)
//	{
//		//...
//	}
//	void Top()
//	{
//		//...
//	}
//private:
//	int* a;
//	int top;
//	int capacity;
//};
//
//class Stack
//{
//	void Push(int x)
//	{
//		//...
//	}
//public:
//	void Top()
//	{
//		//...
//	}
//private:
//	int* a;
//	int top;
//	int capacity;
//};
//
//class Data
//{
//public:
//	void Init(int year, int month, int day)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//
//class Data
//{
//public:
//	void Init(int year, int month, int day);
//
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//
//void Data::Init(int year, int month, int day)
//{
//	_year = year;
//	_month = month;
//	_day = day;
//}
//
//int main()
//{
//	Data d1;
//	return 0;
//}

//class Data
//{
//public:
//	void Init(int year, int month, int day)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//	
//	void Print()
//	{
//		cout << _year << "-" << _month << "-" << _day << endl;
//	}
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//
//int main()
//{
//	Data d1;
//	Data d2;
//	d1.Init(2024, 8, 7);
//	d1.Print();
//
//	d2.Init(2024, 1, 23);
//	d2.Print();
//	return 0;
//}

//class A
//{
//public:
//	void print()
//	{
//		cout << _c << endl;
//	}
//private:
//	char _c;
//	int _a;
//};
//
//int main()
//{
//	A a;
//	cout << sizeof(a) << endl;
//}

//class B
//{
//	
//};
//
//int main()
//{
//	B b;
//	cout << sizeof(b) << endl;
//	return 0;
//}

//class Data
//{
//public:
//	//void Init(Data* const this,int year, int month, int day)
//	void Init(int year, int month, int day)
//	{
//		this->_year = year;
//		this->_month = month;
//		this->_day = day;
//	}
//	
//	//void Print(Data* const this)
//	void Print()
//	{
//		cout << this->_year << "-" << this->_month << "-" << this->_day << endl;
//	}
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//
//int main()
//{
//	Data d1;
//	Data d2;
//
//	//d1.Init(&d1,2024, 8, 7);
//	d1.Init(2024, 8, 7);
//	//d1.Print(&d1);
//	d1.Print();
//
//	d2.Init(2024, 1, 23);
//	d2.Print();
//	return 0;
//}

//class Data
//{
//public:
//	//无参默认构造
//	/*Data()
//	{
//		_year = 1;
//		_month = 2;
//		_day = 3;
//	}*/
//	//带参构造函数
//	/*Data(int year, int month, int day)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}*/
//
//	//缺省默认构造
//	Data(int year = 1, int month = 2, int day = 3)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//	
//	void print()
//	{
//		cout << _year << "-" << _month << "-" << _day << endl;
//	}
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//
//int main()
//{
//	//Data d1;
//	//d1.print();
//	//Data d2(2024, 8, 8);
//	//d2.print();
//	Data d3;
//	d3.print();
//	Data d4(2024, 1);
//	d4.print();
//	return 0;
//}
//
//typedef int STDataType;
//class Stack
//{
//public:
//	Stack(int n = 4)
//	{
//		_a = (STDataType*)malloc(sizeof(STDataType) * n);
//		if (nullptr == _a)
//		{
//			perror("malloc申请空间失败");
//			return;
//		}
//		_capacity = n;
//		_top = 0;
//	}
//private:
//	STDataType* _a;
//	size_t _capacity;
//	size_t _top;
//};
//// 两个Stack实现队列
//class MyQueue
//{
//public:
//	//编译器默认生成MyQueue的构造函数调⽤了Stack的构造，完成了两个成员的初始化
//private:
//	Stack pushst;
//	Stack popst;
//};
//int main()
//{
//	MyQueue mq;
//	return 0;
//}


typedef int STDataType;
class Stack
{
public:
	Stack(int n = 4)
	{
		_a = (STDataType*)malloc(sizeof(STDataType) * n);
		if (nullptr == _a)
		{
			perror("malloc申请空间失败");
			return;
		}
		_capacity = n;
		_top = 0;
	}
	~Stack()
	{
		free(_a);
		_a = nullptr;
		_capacity = _top = 0;
	}
private:
	STDataType* _a;
	size_t _capacity;
	size_t _top;
};

// 两个Stack实现队列
class MyQueue
{
public:
	//编译器默认生成MyQueue的析构函数调⽤了Stack的构造，完成了两个成员的资源清理
private:
	Stack pushst;
	Stack popst;
};
int main()
{
	MyQueue mq;
	return 0;
}